This invention relates to nonvolatile memories and memory controllers. In particular, this application relates to nonvolatile memory controllers that perform Error Correction Coding (ECC) on data that is written to or read from a nonvolatile memory.
Nonvolatile memory systems are used in various applications. Some nonvolatile memory systems are embedded in a larger system such as a personal computer, for example as a Solid State Drive (SSD). Other nonvolatile memory systems are removably connected to a host system and may be interchanged between different host systems. Examples of such removable nonvolatile memory systems include memory cards, USB flash drives, and removable SSDs. Electronic circuit cards, including non-volatile memory cards, have been commercially implemented according to a number of well-known standards. Memory cards are used with personal computers, cellular telephones, personal digital assistants (PDAs), digital still cameras, digital movie cameras, portable audio players and other host electronic devices for the storage of large amounts of data. Such cards usually contain a re-programmable non-volatile semiconductor memory cell array along with a controller that controls and supports operation of the memory cell array and interfaces with a host to which the card is connected. Several of the same type of card may be interchanged in a host card slot designed to accept that type of card. However, the development of the many electronic card standards has created different types of cards that are incompatible with each other in various degrees. A card made according to one standard is usually not useable with a host designed to operate with a card of another standard. Memory card standards include PC Card, CompactFlash™ card (CF™ card), SmartMedia™ card, MultiMediaCard (MMC™), Secure Digital (SD) card, a miniSD™ card, Subscriber Identity Module (SIM), Memory Stick™, Memory Stick Duo card and microSD/TransFlash™memory module standards. There are several USB flash drive products commercially available from SanDisk Corporation under its trademark “Cruzer®.” USB flash drives are typically larger and shaped differently than the memory cards described above.
Different types of memory array architecture are used in nonvolatile memory systems. In one type of architecture, a NAND array, a series of strings of more than two memory cells, such as 16 or 32, are connected along with one or more select transistors between individual bit lines and a reference potential to form columns of cells. Word lines extend across cells within a large number of these columns.
In a common arrangement, a memory controller may perform Error Correction Coding (“ECC”) functions on data that is written to and read from a nonvolatile memory array. The term ECC is used throughout this specification to refer to both encoding and decoding of data according to a particular code, where decoding includes at least detection of errors and may also include correction of ECC correctable errors. FIG. 1 shows an example of a removable nonvolatile memory system 100 of the prior art that includes a memory controller 102 that is in communication with two memory chips 104a, 104b over a memory bus 106. The controller is also in communication with a host interface 108 that provides a connection to a host in a standardized manner. The memory controller 102 is formed on a dedicated chip or Application Specific Integrated Circuit (“ASIC”), which is separate from the nonvolatile memory chips. The controller performs ECC functions on data going to and from the memory arrays. For example, when data is received from a host to be stored in the memory array, the controller may perform ECC encoding, which generally adds a level of redundancy to the data before the data is stored in the memory array. Subsequently, when the data is read from the memory array, the data is decoded to obtain the original data. Errors in the data may be detected and corrected (within some limits). In some memories, such ECC functions may cause a bottleneck that affects overall system performance.